package com.ly.heart.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ly.common.annotation.Excel;
import com.ly.common.core.domain.BaseVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 仓库
 * </p>
 *
 * @author WuZH
 * @since 2024-05-14
 */
@Getter
@Setter
@TableName ( "erp_warehouse_info" )
@ApiModel ( value = "仓库", description = "仓库" )
public class WarehouseEntity extends BaseVo {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty ( "id" )
    @TableId ( value = "id", type = IdType.INPUT )
    private String id;

    /**
     * 创建组织
     */
    @Excel ( name = "创建组织" )
    @ApiModelProperty ( "创建组织" )
    @TableField ( "create_org" )
    private String createOrg;

    /**
     * 使用组织
     */
    @Excel ( name = "使用组织" )
    @ApiModelProperty ( "使用组织" )
    @TableField ( "use_org" )
    private String useOrg;

    /**
     * 仓库属性
     */
    @Excel ( name = "仓库属性；" +
            "1、普通仓库；" +
            "2、车间仓库；" +
            "3、供应商仓库；" +
            "4、客户仓库；" +
            "5、第三方仓储" )
    @ApiModelProperty ( "仓库属性" )
    @TableField ( "ware_attribute" )
    private String wareAttribute;

    /**
     * 供应商编码
     */
    @Excel ( name = "供应商编码" )
    @ApiModelProperty ( "供应商编码" )
    @TableField ( "supplier_code" )
    private String supplierCode;

    /**
     * 客户编码
     */
    @Excel ( name = "客户编码" )
    @ApiModelProperty ( "客户编码" )
    @TableField ( "customer_code" )
    private String customerCode;

    /**
     * 部门
     */
    @Excel ( name = "部门" )
    @ApiModelProperty ( "部门" )
    @TableField ( "ware_dept" )
    private String wareDept;

    /**
     * 分组
     */
    @Excel ( name = "分组" )
    @ApiModelProperty ( "分组" )
    @TableField ( "ware_group" )
    private String wareGroup;

    /**
     * 直运仓(默认否不选中)
     */
    @Excel ( name = "直运仓(默认否不选中)" )
    @ApiModelProperty ( "直运仓(默认否不选中)" )
    @TableField ( "is_direct" )
    private String isDirect;

    /**
     * 管易仓(默认否不选中)
     */
    @Excel ( name = "管易仓(默认否不选中)" )
    @ApiModelProperty ( "管易仓(默认否不选中)" )
    @TableField ( "is_gy" )
    private String isGy;

    /**
     * 管易仓库编码
     */
    @Excel ( name = "管易仓库编码" )
    @ApiModelProperty ( "管易仓库编码" )
    @TableField ( "gy_code" )
    private String gyCode;

    /**
     * 第三方仓储类型(添加时先禁用)
     */
    @Excel ( name = "第三方仓储类型(添加时先禁用)" )
    @ApiModelProperty ( "第三方仓储类型(添加时先禁用)" )
    @TableField ( "third_party_ware_type" )
    private String thirdPartyWareType;

    /**
     * 第三方仓库编码(添加时先禁用)
     */
    @Excel ( name = "第三方仓库编码(添加时先禁用)" )
    @ApiModelProperty ( "第三方仓库编码(添加时先禁用)" )
    @TableField ( "third_party_ware_code" )
    private String thirdPartyWareCode;

    /**
     * 库存状态类型
     */
    @Excel ( name = "库存状态类型" )
    @ApiModelProperty ( "库存状态类型" )
    @TableField ( "stock_state_type" )
    private String stockStateType;

    /**
     * 默认库存状态
     */
    @Excel ( name = "默认库存状态，关联库存状态表的库存状态编码" )
    @ApiModelProperty ( "默认库存状态" )
    @TableField ( "default_stock_state" )
    private String defaultStockState;

    /**
     * 默认收料状态
     */
    @Excel ( name = "默认收料状态，关联库存状态表" )
    @ApiModelProperty ( "默认收料状态" )
    @TableField ( "default_receiving_state" )
    private String defaultReceivingState;

    /**
     * 允许即时库存负库存(默认否)
     */
    @Excel ( name = "允许即时库存负库存(默认否)" )
    @ApiModelProperty ( "允许即时库存负库存(默认否)" )
    @TableField ( "allow_real_inventory" )
    private String allowRealInventory;

    /**
     * 允许MRP计划
     */
    @Excel ( name = "允许MRP计划" )
    @ApiModelProperty ( "允许MRP计划" )
    @TableField ( "allow_mrp" )
    private String allowMrp;

    /**
     * 允许锁库
     */
    @Excel ( name = "允许锁库" )
    @ApiModelProperty ( "允许锁库" )
    @TableField ( "allow_lock_ware" )
    private String allowLockWare;

    /**
     * 允许预警
     */
    @Excel ( name = "允许预警" )
    @ApiModelProperty ( "允许预警" )
    @TableField ( "allow_warning" )
    private String allowWarning;

    /**
     * 启用仓位管理
     */
    @Excel ( name = "启用仓位管理" )
    @ApiModelProperty ( "启用仓位管理" )
    @TableField ( "enable_ware_region" )
    private String enableWareRegion;

    /**
     * 参与拣货
     */
    @Excel ( name = "参与拣货" )
    @ApiModelProperty ( "参与拣货" )
    @TableField ( "allow_picking" )
    private String allowPicking;

    /**
     * 不参与可发量统计
     */
    @Excel ( name = "不参与可发量统计" )
    @ApiModelProperty ( "不参与可发量统计" )
    @TableField ( "no_allow_count" )
    private String noAllowCount;

    /**
     * 拣货优先级
     */
    @Excel ( name = "拣货优先级" )
    @ApiModelProperty ( "拣货优先级" )
    @TableField ( "picking_priority" )
    private String pickingPriority;

    @ApiModelProperty ( "项目Id" )
    @TableField ( "project_id" )
    private String projectId;

    /**
     * 仓库负责人
     */
    @Excel ( name = "仓库负责人" )
    @ApiModelProperty ( "仓库负责人" )
    @TableField ( "ware_management" )
    private String wareManagement;

    /**
     * 仓库名称
     */
    @Excel ( name = "仓库名称" )
    @ApiModelProperty ( "仓库名称" )
    @TableField ( "ware_name" )
    private String wareName;

    /**
     * 仓库编码
     */
    @Excel ( name = "仓库编码" )
    @ApiModelProperty ( "仓库编码" )
    @TableField ( "ware_code" )
    private String wareCode;

    /**
     * 地址
     */
    @Excel ( name = "地址" )
    @ApiModelProperty ( "地址" )
    @TableField ( "address" )
    private String address;

    /**
     * 联系电话
     */
    @Excel ( name = "联系电话" )
    @ApiModelProperty ( "联系电话" )
    @TableField ( "tel_phone" )
    private String telPhone;

    /**
     * 备注
     */
    @Excel ( name = "备注" )
    @ApiModelProperty ( "备注" )
    @TableField ( "remarks" )
    private String remarks;

    /**
     * 状态
     */
    @Excel ( name = "状态" )
    @ApiModelProperty ( "状态" )
    @TableField ( "state" )
    private String state;

    @Excel ( name = "仓位维度数据列表显示格式;1:编码;2:名称;3:编码+名称" )
    @ApiModelProperty ( "仓位维度数据列表显示格式" )
    @TableField ( "display_format" )
    private String displayFormat;

    /**
     * 是否禁用；1：是；2：否
     */
    @Excel ( name = "是否禁用；1：是；2：否" )
    @ApiModelProperty ( "是否禁用；1：是；2：否" )
    @TableField ( "is_disabled" )
    private Integer isDisabled;

    @Excel ( name = "是否已推送" )
    @ApiModelProperty ( "是否已推送" )
    @TableField ( "is_send" )
    private Integer isSend;

    /**
     * 创建者
     */
    @TableField ( "create_by" )
    private String createBy;

    /**
     * 创建时间
     */
    @TableField ( "create_time" )
    @JsonFormat ( pattern = "yyyy-MM-dd HH:mm:ss" )
    private Date createTime;

    /**
     * 更新者
     */
    @TableField ( "update_by" )
    private String updateBy;

    @ApiModelProperty ( "流程实例id" )
    @TableField ( "instance_id" )
    private String instanceId;

    /**
     * 更新时间
     */
    @TableField ( "update_time" )
    @JsonFormat ( pattern = "yyyy-MM-dd HH:mm:ss" )
    private Date updateTime;

    @ApiModelProperty ( "是否再用" )
    @TableField ( "is_used" )
    @TableLogic
    private Integer isUsed;

    @TableField ( exist = false )
    private List<WarehouseRegionEntity> warehouseRegionEntities;

    @ApiModelProperty ( "业务type" )
    @TableField ( exist = false )
    private String businessType;

    @ApiModelProperty ( "流程模型id" )
    @TableField ( exist = false )
    private String modelId;
}
